Laravel 提供了資料庫遷移解決方案,它可以快速地建立 Database Schema。
$ php artisan make:migration [migration-file-name]
建立後的 migrations 會位於 database/migrations
中,會有一個時間序列後接上指定的 Migration File Name。
以預設的 create_users_table.php
為例,其目的為建立用戶表。
<?php
// database/migrations/2014_10_12_000000_create_users_table.php
// ...
class CreateUsersTable extends Migration
{
public function up()
{
Schema::create('uesrs', function (Blueprint $table) {
// ...
});
}
public function down()
{
Schema::dropIfExists('users');
}
}
其中,一個正常的 Migration File 應該存在 up()
及 down()
兩個函式。
遷移時執行 up()
撤回時執行 down()
,如此一來便可以控制遷移與回滾(rollback)的資料庫狀態。
利用以下指令可以進行遷移
$ php artisan migrate
若是對遷移後的結果不滿意,可以撤回
$ php artisan migrate:rollback
如果要重置所有的遷移指令,可利用
$ php artisan migrate:reset
php artisan migrate:refresh
去測試一次
Laravel 提供了兩種存取資料庫的方式:比較底層的 Query Builder 及比較易於使用的 Eloquent ORM
Query Builder 以 Illuminate\Support\Facades\DB
為起始,可以優雅地寫出 SQL
<?php
use Illuminate\Support\Facades\DB;
DB::table('users')->get(); // 取得所有 users 的資料
DB::table('users')->where('age', '>', 18)->get(); // 取得所有大於 18 歲的 users
// 新增一個 User
DB::table('users')->insert([
'id' => 1,
'name' => 'Jack',
'email' => 'jack@example.test',
'password' => Hash::make('password'),
]);
// 修改一個 User
DB::table('users')->where('id', 1)
->update([
'password' => Hash::make('new_password'),
]);
// 刪除一個 User
DB::table('users')->where('id', 1)->delete();
Eloquent ORM 是一個由 Laravel 官方開發的 ORM,其用意是為了簡化資料庫存取的複雜度。
$ php artisan make:model [model-name]
User
,它會自動去存取 users
這個 Table。在應用程式中,我們可以很輕鬆地用 Eloquent ORM 去增刪改查某些資料。
<?php
use App\User;
User::all(); // 取得所有 users 的資料
User::where('age', '>', 18); // 取得所有大於 18 歲的 users
// 建立一個 User
$user = User::create([
'name' => 'Jack',
'email' => 'jack@example.test',
'password' => Hash::make('password'),
]);
// 更新一個 User
$user->update([
'password' => Hash::make('new_password'),
]);
// 刪除一個 User
$user->delete();